public class Test {
    public static void main(String[] args) {
        Date date=new Date();
        date.setdate(2022,8,6);
        date.printdate();

        //两种构造方法
        //无参数构造方法
        Student stu1 = new Student();
        //有2个参数构造方法
        //Student stu = new Student("lisi",18);
        //stu.setStudent("zhangsna",19);
        //stu1.thisStudent();
    }
}
//date类
class Date{
    //属性(字段)
    public int year;
    public int month;
    public int day;

    //行为(方法)
    void setdate(int year, int month, int day) {
        this.year=year;     //this是当前对象的引用,相当于int year前有一个隐藏参数是date this
        this.month=month;   //谁调用它,谁就是this
        this.day=day;       //this只能在成员方法中使用
    }
    void printdate(){
        System.out.println(year+"-"+month+"-"+day);
    }
}
//student类
class Student{
    //属性
    public String name;  //String school = cxd  就地初始化，这个值每个类都应该是相同的
    public int age;      //在属性这里没有手动初始化，为默认初始化

    //构造方法：无返回值，方法名和类名相同，参数有无无限制
    //构造方法在实例化时就被调用
    public Student(){
        this("zhangsan",19);  //this()调用其它构造方法,1、this一定在构造方法中，2、且为第一句
        System.out.println("不带参数的构造方法");
    }  //我们不使用构造方法时，编译器默认提供无参数的构造方法

    public Student(String name,int age){
        System.out.println("带2个参数的构造方法");
        this.name=name;
        this.age=age;
    }
    //行为
    void setStudent(String name,int age){
        this.name=name;
        this.age=age;
    }
    void thisStudent(){
        this.printStudent();   //用this.调用其他方法
    }
    void printStudent(){
        System.out.println(name+age);
    }
}
